{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import pymysql\n",
    "import os, sys\n",
    "from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor, AdaBoostRegressor\n",
    "from sklearn.model_selection import train_test_split\n",
    "from matplotlib import pyplot as plt\n",
    "import time\n",
    "\n",
    "basePath = \"..\\\\dataset\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 通过mysql读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# st = time.time()\n",
    "# conn = pymysql.connect(port=3307, user=\"root\", password=\"root\", database=\"pp\", host=\"127.0.0.1\", charset='utf8')\n",
    "# query = \"select * from banner_carr\"\n",
    "# df_banner = pd.read_sql(query, con=conn)\n",
    "# et = time.time()\n",
    "# print(\"mysql cost time: \", et - st)\n",
    "# # df_banner.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# filePath = os.path.join(basePath, \"banner_carr.csv\")\n",
    "# df_banner.to_csv(filePath)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 同是读取27万，mysql竟然需要40.13秒，但是pandas竟然只需要1.2秒，这个比较有点伤害啊"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cost time:  1.050985336303711\n"
     ]
    }
   ],
   "source": [
    "st = time.time()\n",
    "filePath = os.path.join(basePath, \"banner_carr.csv\")\n",
    "df_banner=pd.read_csv(filePath)\n",
    "et = time.time()\n",
    "print(\"cost time: \", et -st)\n",
    "#df_banner2.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### pandas太强大了，一个mean自动把字符串类型的类（banner_name）直接给干掉了，当然后续如果还是需要banner_name参与进来的话需要先把这一列给给encode了，否则直接就没了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>REPORT_DATE</th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>AMOUNT_PER_KG</th>\n",
       "      <th>PRICE_PER_KG</th>\n",
       "      <th>HAS_GROUND</th>\n",
       "      <th>WEEK_OF_YEAR</th>\n",
       "      <th>MONTH_OF_YEAR</th>\n",
       "      <th>YEAR_OF_WEEK</th>\n",
       "      <th>IS_VALENTINE</th>\n",
       "      <th>IS_TEACHER</th>\n",
       "      <th>...</th>\n",
       "      <th>IS_NEWYEAR</th>\n",
       "      <th>IS_CHRISTMAS</th>\n",
       "      <th>IS_12</th>\n",
       "      <th>IS_11</th>\n",
       "      <th>IS_618</th>\n",
       "      <th>IS_SUMMER</th>\n",
       "      <th>IS_WINTER</th>\n",
       "      <th>STORE_COUNT</th>\n",
       "      <th>CITY_COUNT</th>\n",
       "      <th>RN</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2016-09-01</td>\n",
       "      <td>257389.5</td>\n",
       "      <td>7.390457</td>\n",
       "      <td>86.396316</td>\n",
       "      <td>0.070796</td>\n",
       "      <td>35.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>288.0</td>\n",
       "      <td>67.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1 rows × 22 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  REPORT_DATE  Unnamed: 0  AMOUNT_PER_KG  PRICE_PER_KG  HAS_GROUND  \\\n",
       "0  2016-09-01    257389.5       7.390457     86.396316    0.070796   \n",
       "\n",
       "   WEEK_OF_YEAR  MONTH_OF_YEAR  YEAR_OF_WEEK  IS_VALENTINE  IS_TEACHER  ...  \\\n",
       "0          35.0            9.0        2016.0           0.0         0.0  ...   \n",
       "\n",
       "   IS_NEWYEAR  IS_CHRISTMAS  IS_12  IS_11  IS_618  IS_SUMMER  IS_WINTER  \\\n",
       "0         0.0           0.0    0.0    0.0     0.0        0.0        0.0   \n",
       "\n",
       "   STORE_COUNT  CITY_COUNT   RN  \n",
       "0        288.0        67.0  1.0  \n",
       "\n",
       "[1 rows x 22 columns]"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_banner_agg = df_banner.drop(\"id\", axis=1).groupby(\"REPORT_DATE\").mean().reset_index()\n",
    "\n",
    "#df_banner_agg[\"REPORT_DATE\"] = df_banner_agg[\"REPORT_DATE\"].apply(lambda x: x.replace(\"/\", \"-\"))\n",
    "df_banner_agg.head(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "import datetime\n",
    "def getDayNo(arr):\n",
    "    count = len(arr)\n",
    "    for i in range(count):\n",
    "        dd = arr[i]\n",
    "        dd = datetime.datetime.strptime(dd,\"%Y-%m-%d\")\n",
    "\n",
    "        dayNo = dd.timetuple().tm_yday\n",
    "        arr[i] = dayNo\n",
    "        #print(\"date:\", dd, \"; dayNo: \", dayNo)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.model_selection import train_test_split\n",
    "def plot_learning_curves(model, X, y):\n",
    "    X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2)\n",
    "    train_errors, val_errors = [], []\n",
    "    for m in range(1, len(X_train)):\n",
    "        model.fit(X_train[:m], y_train[:m])\n",
    "        y_train_predict = model.predict(X_train[:m])\n",
    "        y_val_predict = model.predict(X_val)\n",
    "        train_errors.append(mean_squared_error(y_train_predict, y_train[:m]))\n",
    "        val_errors.append(mean_squared_error(y_val_predict, y_val))\n",
    "    plt.plot(np.sqrt(train_errors), \"r-+\", linewidth=2, label=\"train\")\n",
    "    plt.plot(np.sqrt(val_errors), \"b-\", linewidth=3, label=\"val\")\n",
    "\n",
    "#plot_learning_curves(rf, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "def model_train(model, X_train, y_train, X_test, y_test):\n",
    "    model.fit(X_train, y_train)\n",
    "    yHat = model.predict(X_test)\n",
    "    #plt.figure(figsize=(15, 12))\n",
    "    plt.plot(range(len(yHat)), yHat, \"r-\")\n",
    "    plt.plot(range(len(y_test)), y_test, \"b--\")\n",
    "    from sklearn.metrics import mean_squared_error\n",
    "    mse = mean_squared_error(y_test, yHat)\n",
    "    print(\"mse: \", mse, \"rmse: \", np.sqrt(mse))\n",
    "    #plot_learning_curves(rf, X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>REPORT_DATE</th>\n",
       "      <th>QLI</th>\n",
       "      <th>LAST_1_MONTH_AVG</th>\n",
       "      <th>LAST_1_MONTH_MIN</th>\n",
       "      <th>LAST_1_MONTH_MAX</th>\n",
       "      <th>LAST_1_MONTH_SUM</th>\n",
       "      <th>LAST_1_MONTH_MID</th>\n",
       "      <th>LAST_1_MONTH_MID25</th>\n",
       "      <th>LAST_1_MONTH_MID75</th>\n",
       "      <th>LAST_2_MONTH_AVG</th>\n",
       "      <th>...</th>\n",
       "      <th>LAST_6_MONTH_MID</th>\n",
       "      <th>LAST_6_MONTH_MID25</th>\n",
       "      <th>LAST_6_MONTH_MID75</th>\n",
       "      <th>LAST_12_MONTH_AVG</th>\n",
       "      <th>LAST_12_MONTH_MIN</th>\n",
       "      <th>LAST_12_MONTH_MAX</th>\n",
       "      <th>LAST_12_MONTH_SUM</th>\n",
       "      <th>LAST_12_MONTH_MID</th>\n",
       "      <th>LAST_12_MONTH_MID25</th>\n",
       "      <th>LAST_12_MONTH_MID75</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2016-09-01</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>...</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2016-09-02</td>\n",
       "      <td>0.419916</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.331946</td>\n",
       "      <td>0.751482</td>\n",
       "      <td>1.090651</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>...</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.331946</td>\n",
       "      <td>0.751482</td>\n",
       "      <td>1.090651</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.541714</td>\n",
       "      <td>0.541714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2016-09-03</td>\n",
       "      <td>0.142710</td>\n",
       "      <td>0.597410</td>\n",
       "      <td>0.099664</td>\n",
       "      <td>1.098178</td>\n",
       "      <td>1.792231</td>\n",
       "      <td>0.594389</td>\n",
       "      <td>0.347027</td>\n",
       "      <td>0.846284</td>\n",
       "      <td>0.597410</td>\n",
       "      <td>...</td>\n",
       "      <td>0.594389</td>\n",
       "      <td>0.347027</td>\n",
       "      <td>0.846284</td>\n",
       "      <td>0.597410</td>\n",
       "      <td>0.099664</td>\n",
       "      <td>1.098178</td>\n",
       "      <td>1.792231</td>\n",
       "      <td>0.594389</td>\n",
       "      <td>0.347027</td>\n",
       "      <td>0.846284</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 51 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  REPORT_DATE       QLI  LAST_1_MONTH_AVG  LAST_1_MONTH_MIN  LAST_1_MONTH_MAX  \\\n",
       "0  2016-09-01  0.632679          0.632679          0.632679          0.632679   \n",
       "1  2016-09-02  0.419916          0.541714          0.331946          0.751482   \n",
       "2  2016-09-03  0.142710          0.597410          0.099664          1.098178   \n",
       "\n",
       "   LAST_1_MONTH_SUM  LAST_1_MONTH_MID  LAST_1_MONTH_MID25  LAST_1_MONTH_MID75  \\\n",
       "0          0.632679          0.632679            0.632679            0.632679   \n",
       "1          1.090651          0.541714            0.541714            0.541714   \n",
       "2          1.792231          0.594389            0.347027            0.846284   \n",
       "\n",
       "   LAST_2_MONTH_AVG  ...  LAST_6_MONTH_MID  LAST_6_MONTH_MID25  \\\n",
       "0          0.632679  ...          0.632679            0.632679   \n",
       "1          0.541714  ...          0.541714            0.541714   \n",
       "2          0.597410  ...          0.594389            0.347027   \n",
       "\n",
       "   LAST_6_MONTH_MID75  LAST_12_MONTH_AVG  LAST_12_MONTH_MIN  \\\n",
       "0            0.632679           0.632679           0.632679   \n",
       "1            0.541714           0.541714           0.331946   \n",
       "2            0.846284           0.597410           0.099664   \n",
       "\n",
       "   LAST_12_MONTH_MAX  LAST_12_MONTH_SUM  LAST_12_MONTH_MID  \\\n",
       "0           0.632679           0.632679           0.632679   \n",
       "1           0.751482           1.090651           0.541714   \n",
       "2           1.098178           1.792231           0.594389   \n",
       "\n",
       "   LAST_12_MONTH_MID25  LAST_12_MONTH_MID75  \n",
       "0             0.632679             0.632679  \n",
       "1             0.541714             0.541714  \n",
       "2             0.347027             0.846284  \n",
       "\n",
       "[3 rows x 51 columns]"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 获取趋势聚合信息\n",
    "filePath = os.path.join(basePath, \"SalesTrend.csv\")\n",
    "df_trend = pd.read_csv(filePath)\n",
    "df_trend_carre = df_trend[df_trend.BANNER_NAME == 'Carrefour']\n",
    "df_trend_carre_agg = df_trend_carre.groupby('REPORT_DATE').mean().reset_index()\n",
    "df_trend_carre_agg.head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "654"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_merge = df_banner_agg.merge(df_trend_carre_agg, on=[\"REPORT_DATE\"], how=\"inner\")\n",
    "len(df_merge)\n",
    "#df_merge.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>REPORT_DATE</th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>AMOUNT_PER_KG</th>\n",
       "      <th>PRICE_PER_KG</th>\n",
       "      <th>HAS_GROUND</th>\n",
       "      <th>WEEK_OF_YEAR</th>\n",
       "      <th>MONTH_OF_YEAR</th>\n",
       "      <th>YEAR_OF_WEEK</th>\n",
       "      <th>IS_VALENTINE</th>\n",
       "      <th>IS_TEACHER</th>\n",
       "      <th>...</th>\n",
       "      <th>LAST_6_MONTH_MID</th>\n",
       "      <th>LAST_6_MONTH_MID25</th>\n",
       "      <th>LAST_6_MONTH_MID75</th>\n",
       "      <th>LAST_12_MONTH_AVG</th>\n",
       "      <th>LAST_12_MONTH_MIN</th>\n",
       "      <th>LAST_12_MONTH_MAX</th>\n",
       "      <th>LAST_12_MONTH_SUM</th>\n",
       "      <th>LAST_12_MONTH_MID</th>\n",
       "      <th>LAST_12_MONTH_MID25</th>\n",
       "      <th>LAST_12_MONTH_MID75</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>245</td>\n",
       "      <td>257389.5</td>\n",
       "      <td>7.390457</td>\n",
       "      <td>86.396316</td>\n",
       "      <td>0.070796</td>\n",
       "      <td>35.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>2016.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "      <td>0.632679</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1 rows × 71 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "  REPORT_DATE  Unnamed: 0  AMOUNT_PER_KG  PRICE_PER_KG  HAS_GROUND  \\\n",
       "0         245    257389.5       7.390457     86.396316    0.070796   \n",
       "\n",
       "   WEEK_OF_YEAR  MONTH_OF_YEAR  YEAR_OF_WEEK  IS_VALENTINE  IS_TEACHER  ...  \\\n",
       "0          35.0            9.0        2016.0           0.0         0.0  ...   \n",
       "\n",
       "   LAST_6_MONTH_MID  LAST_6_MONTH_MID25  LAST_6_MONTH_MID75  \\\n",
       "0          0.632679            0.632679            0.632679   \n",
       "\n",
       "   LAST_12_MONTH_AVG  LAST_12_MONTH_MIN  LAST_12_MONTH_MAX  LAST_12_MONTH_SUM  \\\n",
       "0           0.632679           0.632679           0.632679           0.632679   \n",
       "\n",
       "   LAST_12_MONTH_MID  LAST_12_MONTH_MID25  LAST_12_MONTH_MID75  \n",
       "0           0.632679             0.632679             0.632679  \n",
       "\n",
       "[1 rows x 71 columns]"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels = df_merge[\"QLI\"].values\n",
    "df_merge_clean = df_merge.copy()\n",
    "getDayNo(df_merge_clean[\"REPORT_DATE\"].values)\n",
    "df_merge_clean = df_merge_clean.drop(\"QLI\", 1)\n",
    "df_merge_clean.head(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "654"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(df_merge_clean)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(df_merge_clean.values, labels, test_size=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mse:  2.0381387694049318 rmse:  1.4276339759913714\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "lr = LinearRegression()\n",
    "model_train(lr, X_train, y_train, X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\wenyang.zhang\\documents\\myspace\\python37\\lib\\site-packages\\sklearn\\ensemble\\forest.py:245: FutureWarning: The default value of n_estimators will change from 10 in version 0.20 to 100 in 0.22.\n",
      "  \"10 in version 0.20 to 100 in 0.22.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mse:  1.4474719092476627 rmse:  1.2031092673766846\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD7CAYAAABzGc+QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nO3dd3gUZdcG8PshgRA6SkCkg11EhaACFqSDIliwvNZXigUVK6AoooLoZy+IAtJ8ERUb2EAUFAuCCUVAQAJIE0MgEBJISLJ7f3+cnZ1NskmW3SSTIed3XbmyOzs7c3Z29swzZ56ZMSShlFLKfSo5HYBSSqnwaAJXSimX0gSulFIupQlcKaVcShO4Ukq5lCZwpZRyqWITuDFmqjFmjzFmbZDXHjbG0BhTr3TCU0opVZhQWuDTAfTKP9AY0wRAdwDbSzgmpZRSIYgubgSSS4wxzYO89AqA4QDmhjqzevXqsXnzYJNSSilVmMTExL0k4/IPLzaBB2OMuQLALpKrjTEhv6958+ZISEgIZ5ZKKVVhGWO2BRt+1AncGFMNwCgAPUIcfwiAIQDQtGnTo52dUkqpQoTTC6UVgBYAVhtj/gbQGMAKY8wJwUYmOYlkPMn4uLgCewBKKaXCdNQtcJJrANS3nvuSeDzJvSUYl1JKqWKE0o1wNoClAE41xuw0xgws/bCUUkoVJ5ReKDcU83rzEotGKaVUyPRMTKWUcilN4Eop5VKawJVSyqU0gSullEtpAldKAQDq1gW6dHE6CnU0NIErpQAABw4Aixc7HYU6GprAlVLKpTSBK6WUS2kCV0opl9IErpRSLhXW9cCVUseehQuBhg2djkIdDU3gSikAQLduTkegjpaWUJRSAIBq1YCWLZ2OQh0NTeBKKQBAZiawdavTUaijoQlcKaVcShO4Ugper9MRqHBoAldKITfX6QhUODSBK6Xg8TgdgQqHJnClFKpUAX76Cdi+3elI1NEI5abGU40xe4wxawOGvWCM2WCM+cMY85kxpk7phqmUKk1RUcCFFwJNmjgdiToaobTApwPolW/YQgCtSbYB8BeAR0s4LqVUGcrKkn7glXSf3FWK/bpILgGQmm/YtyStwx6/AWhcCrEppcrIgQPSD5x0OhJ1NEpie3s7gG9KYDpKKYfoQUx3iiiBG2NGAcgFMKuIcYYYYxKMMQkpKSmRzE4pVUq0G6E7hZ3AjTG3ArgcwI1k4TteJCeRjCcZHxcXF+7slFKlSFvg7hTW1QiNMb0AjABwCcnDJRuSUqqsWQlc21juEko3wtkAlgI41Riz0xgzEMCbAGoCWGiMWWWMebuU41RKlaKmTYFVq4ANG5yORB2NYlvgJG8IMvjdUohFKeWQmBigTRu9JorbaK9PpRRSUoC6dYFovcWLq2gCV0ph+3YgLc3pKNTR0gSulMrTC0XLKO6hCVwplacfuHYpdA9N4EqpPElbE7h7aAJXSvlb4O3b6wWt3ESPOSulcMEFQFIS0LChXBtcuYNua5VSiI2Va4FnZ+tBTDfRBK6UQlIScNJJ0hd8716no1Gh0gSulMKffwI7dshjPYjpHprAlVLajdClNIErpbQboUtpAldK5UnaenMH99AErpTyJ+2bb5YDmcodtB+4UgrXXAN07w4cf7xekdBNtAWulELVqkCtWsDu3dIXXLmDJnClFJYvl9PomzaVLoXKHTSBK6WQmAisWyePtReKe4RyT8ypxpg9xpi1AcOOM8YsNMZs8v3Xwx5KuZj2A3enUFrg0wH0yjdsJIDvSZ4M4Hvfc6WUS2k3QncqNoGTXAIgNd/gfgBm+B7PANC/hONSSpUhbYG7U7g18AYkdwOA73/9kgtJKVXWrKQ9dizQooWzsajQlXqPT2PMEABDAKBp06alPTulVBgeegi49165rKwxTkejQhVuCzzZGNMQAHz/9xQ2IslJJONJxsfFxYU5O6VUaYqOlsS9YQOQnu50NCpU4SbweQBu9T2+FcDckglHKeWEr78GunYFzjgD+Oknp6NRoQqlG+FsAEsBnGqM2WmMGQjgOQDdjTGbAHT3PVdKudSvvwJLl8pjPYjpHsXWwEneUMhLXUs4FqWUQwJ7oWg3QvfQMzGVUno9cJfSBK6U0n7gLqUJXCkFAIiKAiZNAuLjnY5EhcqQLLOZxcfHMyEhoczmp5RSxwJjTCLJAptWbYErpQAAR47IZWX3FHpWhypvNIErpTB1KnDrrcD55wPz5jkdjQqVJnClFJYsAT77TB5rN0L30ASulILHA1SpYj9W7qAJXCkFjweIiZHH2gJ3D03gSink5toJXFvg7qEJXCmF2FjgxBOB2bOByy5zOhoVqlK/HrhSqvybMaP4cVT5oy1wpRQAgAQWLQK2bnU6EhUqTeBKKYwdC4waJdcEf+89p6NRodISilIKP/4IHDokd+XRXijuoS1wpRQ8HrmtWlSU9kJxE03gSink5kryjorSFribaAJXSsHjkeQdHa0tcDfRGrhSCnFxQI0awCefAE2bOh2NClVECdwY8wCAQQAIYA2A/5LMKonAlFJl5/PPnY5AhSPsEooxphGA+wDEk2wNIArA9SUVmFKq7M2fD6xa5XQUKlSRllCiAcQaY3IAVAPwT+QhKaXK2h13SOnkzTeBvn3l1mqq/Au7BU5yF4AXAWwHsBtAGslvSyowpVTZWbIEWL1auxG6TSQllLoA+gFoAeBEANWNMTcFGW+IMSbBGJOQkpISfqRKqVJj9ULRBO4ukXQj7AZgK8kUkjkAPgXQMf9IJCeRjCcZHxcXF8HslFKlRU/kcadIEvh2ABcYY6oZYwyArgDWl0xYSqmyZJ3IEx2tJ/K4SdgHMUkuM8Z8DGAFgFwAKwHooQ+lXOjkk4HGjYFZs4CaNZ2ORoUqol4oJJ8E8GQJxaKUcsh33zkdgQqHnkqvlPL7+mtg8WKno1Ch0lPplVLo2RPo0weYORNo2BC49FKnI1Kh0Ba4UgpLlwLbtmkvFLfRBK6UynM5WU3g7qEJXCmll5N1KU3gSqk8J/JoP3D30IOYSim0by8Xs5o8We6LqdxBE7hSCkuXOh2BCoeWUJRSft98A8yZ43QUKlTaAleqgsvKkhLKgw8Cn34K7NoFDBjgdFQqFNoCV6qCy8kB1q4FUlO1G6HbaAJXqoKzep1oN0L30QSuVAVnJWztRug+msCVquACW+BaQnEXPYipVAVXuTLQrRvQpAnw8stAdrbTEalQaQJXqoI7/nhg4UKno1Dh0BKKUspvwQJgwgSno1Ch0gSuVAW3dSvQvDkwd670A3/mGacjUqGKKIEbY+oYYz42xmwwxqw3xnQoqcCUUmUjK0uuBZ6ZqTc1dptIa+CvAZhP8hpjTBUA1UogJqVUGbJ6nWgvFPcJO4EbY2oBuBjAbQBAMhuAHr9WymUC+4HriTzuEkkJpSWAFADTjDErjTFTjDHVSygupVQZyd8PXEso7hFJAo8G0BbARJLnAjgEYGT+kYwxQ4wxCcaYhJSUlAhmp5QqDbVrA1deCZx4IjB6tNTDlTsYkuG90ZgTAPxGsrnv+UUARpK8rLD3xMfHMyEhIaz5KaVURWWMSSQZn3942C1wkv8C2GGMOdU3qCuAP8OdnlLKeYsXA48/DoTZrlNlLNJ+4PcCmGWM+QPAOQCejTwkpVRZ+vlnoF494JdfgJ9+AsaNA7xep6NSoYioGyHJVQAKNOuVUu6RlQXs2ydJO9qXEay71KvyTc/EVKqCy98PHNCeKG6hCVypCs5K1tb1wAHtC+4WmsCVquCCtcA1gbuDJnClKrjGjYGbb5YDmffcAxw+LH3DVfmn1wNXqoJr2xaYOdN+Xrmyc7Goo6MtcKWU39KlwLBhwIEDTkeiQqEJXKkK7v33gZgYICkJ+PNP4PXXgfR0p6NSodAErlQFl5Mj98GsVEm7EbqNJnClKrjAy8lqLxR30QSuVAWX/3KygCZwt9AErlQFF9gP3GqFawJ3B03gSlVwZ54J3H03UL06cO210iI/4wyno1Kh0H7gSlVwF18sf8p9tAWuVAWXmyu9UEjgjz+AgQOBrVudjkqFQhO4UhXcSy9JP/DMTGDXLmDqVCA52emoVCg0gStVwenFrNxLE7hSFZz2A3cvTeBKVXBWP/DAMzE1gbuDJnClKjjr9mnGSC28Th1J5qr8i7gboTEmCkACgF0kL488JKVUWbroIvsu9B06APv3OxuPCl1J9AMfBmA9gFolMC2lVBnr2VP+lPtEtKNkjGkM4DIAU0omHKVUWcvIsFvdW7fK2Zi//+5sTCo0kVa6XgUwHIC3BGJRSjngsceAli3l8cGDwJw5wI4dzsakQhN2AjfGXA5gD8nEYsYbYoxJMMYkpKSkhDs7pVQp8XikCyFg/9deKO4QSQu8E4ArjDF/A/gAQBdjzP/yj0RyEsl4kvFxcXERzE4pVRpyc+3ug3pDB3cJO4GTfJRkY5LNAVwPYBHJm0osMhf55RcgIcHpKJQKj9WNENB+4G6jVyMsARdeKP+trlhKuUlgCSUmBmjcGKha1dmYVGhKJIGT/AHADyUxLaVU2brqKqBdO3nctKkewHQTbYErVcH17et0BCpcesJsCZgwARgxwukolApPcjLwzz/yeP9+oHdv4MsvnY1JhUYTeISysoDTTgMefNDpSJQKz1132Wdi5uYC8+cDf//taEgqRJrAI7R9O9C1K7BggdORKBUe7QfuXprAI2SdgnzLLdp3VrmT9gN3L03gEQq8ctuhQ87FoVS4tAXuXprAI5Saaj/WBK7cKLAFHh0NnH46ULeuszGp0Gg3wggFtsAzMpyLQ6lw3XOPXTKpUgX4809n41Gh0wQeocsvBxITgWnTNIErd+rf3+kIVLg0gUeoWTPg4YeBmjV1t1O5U1KSlE6aN5fnnTsD//kPMGSIk1GpUGgCj9DSpdIX/LXXnI5EqfDceKM0PubPl+e//iq3VlPlnybwCD33nJz0sGyZ3Ai2ShWnI1Lq6OTm2r1PADmgqb1Q3EF7oURo/36pfcfGArNmOR2NUkcv8HKygCRzTeDuoAk8QqmpQJMm8lgPYio3CuwHDkgy1xN53EETeIT279cErtwtsB84ALRvL5eVVeWf1sAjlJoKnHCC/AA0gSs3evbZvD2oFi50LhZ1dDSBR4AEfvwRqFcPmDxZE7hypyuvdDoCFS4toUTAGOC884CWLYHhw4Hu3Z2OSKmjl5AAbN5sP+/VCxg92rl4VOjCTuDGmCbGmMXGmPXGmHXGmGElGZgbpKQA774L7NwJPPaYnJWplNv07w+MH28/37AB2LbNuXhU6CJpgecCeIjk6QAuADDUGHNGyYTlDhs2AIMGyf8DByShK+U2+Q9iajdC9wi7Bk5yN4Ddvsfpxpj1ABoBqDCXwrEuZFW3rn09iR9+cCwcpcKi3Qjdq0Rq4MaY5gDOBbCsJKbnFtalZOvWBWrU0IOYyp3yt8D1TEz3iDiBG2NqAPgEwP0kDwZ5fYgxJsEYk5ByjNUYrBb4ccdpAi9tzZoBPXo4HcWxKf+ZmB07Aq1bOxePCl1E3QiNMZUhyXsWyU+DjUNyEoBJABAfH89I5lfe7N8vPVFq1dIEXtq2bwfq1HE6imPTe+/ZVyIEgClTHAtFHaWwE7gxxgB4F8B6ki+XXEjucf/9wHXXyUWsNIGXHhKoXBno08fpSI5N/fo5HYEKVyQt8E4AbgawxhizyjfsMZJfRx6WOxx3nPwB8iNo2dLZeI5VBw4AOTnAkiWSzI1xOqJjy4IFQKtWwEknyfOrr5YGyYwZzsZVmo4cAWJinI4icmHXwEn+TNKQbEPyHN9fhUneADB7NjBnjjy+9FLgvvucjedYlZws/3/9FUhLczaWYw0pJ+6895497N9/gX/+cS6m0vbZZ0DVqsD69U5HEjk9EzMCr71m1wsPHpQVIifH2ZiORbGxcpwBAHbvdjaWY43XK//z90I5lrsR/vyz/K9e3dk4SoIm8AikptollE8+Ac44A9i1y9mYjkXNmgGffy6PNYGXLKu7YEW6ocOBA0CDBsfGFRc1gUdg/377Km41asj/Q4eci+dYlZUF1K8vjzWBlyyrpV2R+oFv2CBlucREpyOJnCbwMJGSwK0WuJXAtSdKyRs/3u6XrAm8ZAVrgV94IXDRRc7EUxY2bpT/kyc7G0dJ0MvJhik9XVZ+qwVu1dM0gZe85GS5ZO/HHwOnneZ0NMeW2FjphXLKKfawMWPKNobcXLmvrNULpjR5PMATT0gX4GOh3Kkt8KOUliZHsWvWlItXDR4sw7UFXnr27JGa5SWXyH9VcqKj5QzXwBN5ytrjjwMnnwzs2FH684qKAoYNk3MKNIFXQC++CNx4ozyuV8/uHdG8OfDOO8DZZzsWWrlUErXU5GRJ3N9/b3fbVCUjM1OW6ZYt9rD//rdsSyhffSX/rdJGadqxA0hKAk48URN4hZSYKLt6+U8mOe44YMgQZ1sy5c3YscCpp8rxgkjs2SMHMSdOlN3f/F55BejSJbJ5VFSpqcC11wLffWcPy8gA9u0ruxjq1ZPfT1l8h6+/LsdTGjaU9crt3X41gR+lFSuAtm0LDvd65c4mO3cWP43vvwdWr448sRVl9WqgTRtg797Sm0dxqlWTO71EelLInXcC11wjP7r8BzHT04H//Q9YvNi+uJgKnbWH5GQvlJ07ga5d5ZIUpW3jRinXDBkC/PFH2cyzNLk8/LK1e7fszp97bsHXSLmb99SpRU9j+3agWzfgnHOkH2ppXTho9mxgzRo5QFXWxoyRll27dvJ83brIpvfQQ3J6d8OGcsLU4cP2a3/8IRtVAFi1Kvj7VeGC9UKJji7bE3leeQWIiwNeeKHwcbxeYNSoyNeljRtlr7BxY+Css/JuuNxIE/hRWLlS/gdL4FFRcnpucQcxl/mumP7441IWePBBqUOWtEcflf+h7BGUpKwsYNw44KWXgDPPlGGR/OiOHJHPkJMjCRyQU70tGzbYj61EXpFkZUVW7igP/cAvv1w2yi8XcUm8DRuAZ5+Vck+4srNlj/C006Qh8NZbwNq14U+vPDh2EnhKitwWp7hD2U88AcycWfQ4ixYB558vTepOnfwZqFMnYP4La9Duoc7yWseOclNM3/nIoVyRsFeXbHzXeSye6JOIDz6QhB676Q9ZMwMz+cSJwHPP2c89HmDAAJlv4F/PnrI2BiCBWimb0ajqXqxbmW2/MGuWNGOKkJoq13RJT4fsZ+af3yWX5D36M28ecO+9/qdr10pSOPdcoN7yr1E/9iDWrglSK1q4ULrwBNaRnnwSmD49z2h//AE0aQLM/++HaLjqGwB5yygbNgAx0bk4sfIerHh2fsF427cvOjMA0nS/7jrJhpbXX7ff36dP3jO03nor7/JPTy84zaQk4Kqrir54Cyn1ofnzC77m8QB33GHPJ2AZB7qly07UqwfktLtAvpvA9f+rr4ChQ4v86Hla4KNHAzNn4sILfXeqT0uTLipWDJMmBZ/I00/b41x9ddHN96wsoG9f//jb2vTFwlOGosWvs/Dvv3KWZDC/LJFAk3cFFK3Xr5faWohdv7Zskc97ao1dOHLtzRg6VH7qAHBkxgc4+NBTIU0HgHRlsU4PLkRqKvDRR/aNX0oFyTL7a9euHUvNm2+SADl2bOHj7N1LRkWRp5xS9LT69SNr1yb79CGrVCEffNB+bcAAslYtee3ss2WeF11E/vUXmzcnb765mDjnz5f33HqrPeyOO2TY3Lny3OMhGzQgq1UjDx+WYb/8IuNccIHMu08fsksXGfa//+WZxZo1ZL3YDEYjm22bpdgvnHYaWamSLIdCjBwpk3z18RR5cO659vx69ZJhL75ov6FjRxmWlESSfOcdebplC8nOnfkInuerj/5bcEY9e8qIq1fL8/37yehoskUL0uv1j/bllzLasuiOzDjxZCZt8vLIEXsyl/fO5VnmDz5cdwqfOvk9O1brr2VL8vjjyZycQj8zBw+WmXzxhTzPzSXj4iSWSy6R1z75RF7zeskTTySbNSMvvVRemz274DRHjJDXpk8vfL7r1sk4XbsWfO2NN+S1zp3t9WznzgKjyVaAXHzecHnw3HP2ixdfLMM2bCg0hEOHyF9/JVM27Zffxkkn2ct/5kx5f5cuZNOm8pkDvhv/BKpWJU89lezQQcb/8cfCP7P1hV50EdmnD18/YyIBcjIGEiCXLg3+tgev3U6AHHdWwLIeNkym9eGHhc8vwIED5Mcf5XLnOZfRA8PKUbkcMUJeG1hnDu/F6+SePcVPaMsWmW+HDoWO4vGQ1avnXa0iASCBQXLqsZPAe/SQj3PeeYWP89579hpf2Ep9+DAZG0sOHSrPe/cmW7UivV6+8Uo2V1brKD94Ur6ld98l69Qh27Vj69bklVcWPvvcXPLp8+ZxDc6UpJKby782eHh97GfchibkwIEy4m+/2XF++aUMGzFCEtyBA/YErUR/7bV55mMl0XcwmPM7jJGBGzfa05w5s9AYb7hBRkkd91aexOzXpo0kBpJMTiaNkfFeeYUkOWSILA7v3n2SEADy+efzTiMtjaxcWV575hkZNnu2Hd/atf5R331XBm1FM3mwYkWeSZ3UMIMD8CG5YEHwD/TRR/K+JUuCv+7xkCecIONY3+uvv8rz998ns7PJunXtDW5Cgp2Yc3PJ+vVloeV3+uky3lVXBZ8vSY4fL+NER8sGzLJzJ1mzpqzTXq+d6N9+O8/bvf/sZgwy7STRtq1sUEnZSFeqJO974YXCY7DMmmUv//XrZdg115ANG8oymjIl7wbXMneuDF+4kDx4UBo8Dz1U+HyGDCFr1CCzskiS995L1qjh5aZqbQiQU6cW8r4HH+QB1JLG05EjslxatJB533ijf7T588kZM4r4nNaGsUoVNotN5k03kd6/NrERdsh6VNQG1/LaazINY8h/gzROKIvQWpyjRxc/yeIc2wncSgh16shH+uef4OMNGCAta4D8v/8LPs4XX8jrVkKYOJEEmLp0AwFyPEYU3KT6vtBv3trMX34pPMy1a7wEyBnVfC3un37i1rmrZceh6jOSDDwe8rHHJPlVry4rPCkJoVu3ghMdNEh+7AHN0luvSmMckumtXcduxb/4osyzdm35YRaiZUvfRujSS8kzzyw4wuOP2634qVNlmnXqyPgkzz9fGmz83//8r2V16Jyn1cw5c+z3tW8vw264wf5unn3WP+qzz8qgQzXqk8bwlZ7f8Kuv7EltuW4k/6p+DpmVRY/Hnxds1rrx8MPBP/CyZXYsJ5wgy3/kSEmqqakyzo03+je4HD1aPr/VUrv9dok7O9ue5l9/2dOsXp3MzAw+7w4d7HU2sBV/5ZXSqrU2nl6vNCL69Mnz9owJ09kVCzntqW0yYMwYSSrJyXbruU4dae0W4ttvZdTcAdf7l/+DFy3nCSd4JdEOGcKtW8mrL8vkZrS0N7iWgQPtpErKnlVAK37uXFk1srMpy7ZhwzzrX69espOXe9UAVjcZHP+sp2CQ1uevU4dpqMlds3+U3Uzr89Wp41/+Z50lg/M3pL1ectYb+7i0WhfZMA4dyo6VfuWll+Ry86h3CZBvxj7Mzy8YX3wjvGtX+3t7913/4D/X5PofT59u5Xgve/cuZnohOLYTuNXKesvXapw0qeA4WVmS6AYPJs85h7zwwuDTGjxYxrMywY4dJMBFg98nQM6PucIua1hSUiRJPPBAkWFOG/O3NHBGTpfxH3mEfOIJXorveVLcfnqtfcjWrWWtt1pAVuv59dcLTnTePHnt22/9g06OS2U/fMasVydyAbozafIiaTW3acPNN4zivupNgmQ62e4B5N0DMznePMrDDz9RcH7Ll9ut+P79ycaNJeFFRZGpqczM9O3pX3st2aABEwa9xSjk8MtZAXsON98sCfGpp2Ra27aRtWvzxfYfcFaLUVIm8rn/Pg9rIF2SaMeObFx5N2+7zfei1XoeMIB790q+CbaI2KNH4WWzUaMk9tdfl1iWLSPPOMO3FfL58EP/BrfAuvP55/La99/bw156SYZNmCD/v/664Hz//VeS7ZNPSrnGasVbDYjx4/OO/8ADZEwMmZ5uD7viCn9Z48gRMv3nVfQ3Y611Z9Qo2eCkpDCYyy4jW7X00luzliTjtm05rOGHrFUtm9Ye4N13y+q6rs31XHLaYPvNHo80Oq67zh5mfWZfK96qmLz3HvOuOz6tWvl2IGfMYDaiyd9/LxDj/EnbeCU+4e7Rb7EBdvO205eS48bJtKzS6eLFJMk//5Sn48blncbLL/uGR48mN28mv/2WA/AhT2mUzqmnPkeAnNf7LVZCLu+7u4hym1XqGzGCbNJEyq0kF728UlaRVxNIknfdRdaskslba37Cesd7ClSejpbrE3iRC+Cmm+w6Z4sW5OWXFxxnwQL69zUDWlF790q+P3iQdkLIV5Jgu3Z8qdlrBMjk3rcGj+Gqq7i27oVcsqjwL/+u+OWshQP07E4mu3eXmvTZZ3P6KeMIkD9HXSw/BqskYbWirr9e/v/9d8GJWiWfe+4hKS0PgHy+wYvc/2+WlEVbv8cMU4MrBk1gdJSHozFG9jXzOXRItgev3/K7VB3eXkdSflMTJvhG8nikBnz55dK6v/tu2egAshtOSmusZk1y0CDu/2GVxDPA98PMySGPO4685Ra7FXX99fQC/l3ONNTy75r++MZqTsQdkkSfe47xWM6el0iLNnHGGr6M+3lw8gf0eqWa5E/ugaykEqxsdtZZUufe5yv5WMv/tdfscaxWvPVaQEkie38Gk2OaSD3WcsklMt3MTGmB33lnwfn6akOeFav4eZfX6K1VW1bCli1lbyuwRU9KggLITz/1f1neqrHkvfcyLU0ahOPGeiWp9O4ty3/IEPnygKB1Bat8fV//bTLO3LnkmDF8EC+xelQmWa0ad2/NZEyMtGtuOHst62IfD6z37eH6vvd3Bi7jm2/6Jupr8PD55zlxolShWreWnTnPqCdkGe/bJ8suW56OGkW75PNEwUbDQxctYwwymZW0g5fVX84zKm+UUmn79rJBi4khH3jAv8i6dZN2hXXYY+FCslIlL6/Cx/Q87TtGduQI/63Riql9b+GtZjrrxWbQ+/U3HIx3WDnaw5kzC+ac7Gxy6jP20IEAABTmSURBVB2/8VP059ZPEqXMGhtLpqVxWsNHCZB/texJHjnCtqcfYhd8x7dwp5QAtxZcBY6GqxP4pk1kp06ydS0gJ4esW5er+46SJDxsmKyVGRl5xxs61C4nJCbyMKqS06dz925ZCr17k7m/yu70gUkf8oEH7FIgn3qKN2EmG2FH4UW6L77gTZjJlifY883IkDxg7R23q7aOXWr7EpnVcgCYPu41Vq9ODmr4pX8Yk5LspALIgazC9OvH9Sd24a6dXv7z534+ZF7iyoFvkCQbxe7lzZjBWbiBxnjZsoWHdbGPBwcVvreQ3G+w/Aafk5bD6adLw5OUvPpZj7c4Fo/xYfwfH7hqK9+bIbX4by5+lg8+SGbM+97eWHq9bBT1D29uslgm8OOP8tonn8gvpGVLEmBaTByrVZMS03MYbu+aPvKIJM+0NHL9evbFXLZpJK3JsZ0XEiAztktC6N1bSvQFbN/O/GUzr5dc8cVOGf7yyzKwc2d7+W/ZkmcS3u49uBTn8xBiZY/IN40LLiB7xiXYB1+tA+WPP06SzOx/PafXGcZtf+fLBv36kU2b8v1Z8plHYDy93X3HcRYuLPgZrFq8tYWaN493YCIvaSNlnvbtpXzFoUPtz/DVV/ZB12uuodcr1RmrdWq1jhf0myCJ6NAhcsUKPoLnWRWHySuv5PDhklc3bSIT52wmQA7vsZKff04m3PYGGR3NZx47TGMCyvht2zKn48WsX1+qllY1bV7ze2Xj5pObSyYm2sntm9YPs2fNnwtUnC6osYadqq8kST7VL4EGHqahpt1hoU8fslUrPviAl6edRn72mcxvzhxZlLVre9k6ZiPTW5yVt5zl2yBfh9m8ocdeMiuLe6o35wUN5HN26SKrjmXGDHvRjn3aI3u9ANmjB5/BKALkAdRixthXeOXxP/D5amO4t9/t3BrVit51wZJX6FydwP/dsJ/H183leedkMWfLdlmq1t+nn/IwqrJ5/Qw55vPd9/TAkNOm5R2vSRPZ5Sf5zNNetolex/09ryO3b+e44fsJkMPO+YEpleozeUMqa9WS3UuS9K5YyQ74hVfiE6kvBpOdzTtjp7N+lVR6/t7OF0btZ73jcv1f+MRHt7Eu9nFEZ99h9m3b7LXhr784YgQ57jJfT5PA2rPVCyJIy4SU39zQLuv8k3r1mp/kwW+/kSS7t97FtkjgtVXnskEDr7+x/ELtZySGgGU09cV9XPXVTrJWLbaqlcz+/e18+847Mr/Jk+2wY3GIsbFeVqlCbr1uBIdWfoc1qnvoGThYEoKv1NSjyTq2NStk1/Wuu+RAl1UKuP9+mZhvr6lnTy/jKqXwUI/+5PbtXN2sL3df4ttF93o5pNZsxlVOJbdv5421v2DTmN3+ZWFVQ4JWC849V7Kt77NOe2kvAfJHXGTXmq397LPOyvPWxETykpN2EiA/P/EuktL47NfP7gjxPS4lFy3yb5hzly7n5Mlk4+MyCJD9O/5rL+ukJI6NfpKTLn2fHg9558BsAuRjGEtefXXw9YuUMlK9evK93XQTz6v0O7teKjXjsWMljs5t9nEw3pHGipWs7ryTrFGDifN2+r+7NQt3886b0lm9modZTU+WcoxvGT9a8w1WxhGmT3yPMTGyA2i9dkW1hf5p3Fl3NtmlC1euzLd9HDOGC9BDttPvpDBny3Y2b5jF6/G+lJdYsH1FkrNv/IIAuXrWGv+yOrx8DSvjCId3+pkk+c37qQTIRejM95/bxvPPJ/95XvZU255ykJ07ZDJ363b27XaYX07bw07xWWzdIJl/o2mBY1cbX5zHkXiWO+POoTfXV3u/+mp6GjbixHH72KpZNme/meKPpV/3Q2xsdjDxijGS2K09TYBDmnxFY7w8vnIaXzIP0V/K3bNHdo+6dSumjFC0UkngAHoB2AggCcDI4sYPu4Ry992cjeukVYhH7Azi+3s6agwB2cs+r72HM62DhPn+Dr89gw88IE9vPuU35iDK/9owvEKAbBqzmykpspcM+CoNXi/Tm5zObfFF9Cgg+XD8YlZDBo+gMvtiLntgPn/AxeyNr1gNGdyFhkxPCNiNP/dcad5afN2TNt7xEnv2lN+pP6kkJBSY3/z5UoUByGF4lePwKFfibPtgHMn778xkFHJYPTqTgwbJ+7qesYs1kcbNaOH//BmoxijkSBIBePOl29mggXSiOO442VCQ0gL/7ccspleX3i+Zmb49lS++YAf8wovgy/i+2iBJPnDVVlbFYeaikr27Y7FKA5Mnk5TtzoTOHzELVUiA9fEvh3Sye6U83Wk+W2ETvQDb4Xf2OHWr/7V16ySB33dfkC9nzBj/Z03B8TweKeyEn7i8xbW8/XZpDTIpScZ5/HHm5kq1ondvKVXXOy6XL+Bheh8ZTlJK1rVqycaiyYm5bI9lcgwDYPoJJ7Hv5dKyPr9dNl8wjzAd1f3zn4g7CJC39dhJr1d+1/9tspAGHq76ehdJGTZ8uDSo/cfkrWM9AD0wrB6d6a/cJCWRzZuT55/n4egq4/P2fvnmG//7fkc71sZ+dsF37IH57I9P5bUpU/yjz+3zNu8xb5DJyRw4UI7JWnYMfoqv4x7+jI7MRAz56qskpbXauLGv8rNyJW/DVNbCARkH4Lv4L9/E3eRff/G116T2/emnsqOV6zv2t2quHCN6B4P98X6F3lLdeWUzSdnBAcg7as5idLQs42ED07kfdWjg4RiMzvOb/xf1eRA17NZYgB++OEiA/O6yl+2BVtky3186qrMqDvM+vEp+/jmXL/f13r3uOrJKFfa+OIPnnkued3YmT8ef9LaL93+wj27/ms9ipOwahKnEEziAKACbAbQEUAXAagBnFPWesBP4L7/QO3kKr2q7hTHROZx8yxJ6J08hp0zh5vEfMjYmlwMGSM46+2zy5CaZPDRhGn8a8YWsmFOm8MuHFrFZM/nChw4lPckpUg7xvZ7zzrv8b6eNfOKeVHq9coyvVStZQmlplOyQb7c6vydHSJcuzySZnhVj5sRpXD7qc+bpPkHKfmlAXTYnh/z5zZU8Pz6XdevKwcB3387m6neWMjtbSsbvv2+3MJ95Rvbcv/uOchDN91mYmOifZmCL2WqA/PJjDmOr5HD1k5+QU6Zww9g5nHTLTwTIr4fNJz/4gG+96fG/b+TIIB82MZHcbbd+c7Nl/GHd1kgMAfueP/7g5Qs3reLht6Zx5wvvc/qLKTzvPNl25WR7yQULeNstHvs35uvhsmHsHFYyHj4+0j6usGvdfm5+fg69k6cwtkoO77srb6142rRC6o1paeT06Zxz53fse/bfjI7ycO1TH/Ojl7f789f06eQ9V+4k09OZkyOVh0aN5DjjgQOUrohpaf5umvffb88TIP/baSM5ZQoXTNjEypWlx5rXS2mZT5nCQxOm8frzkgiQl7XdxczDdossdc1O1qmZ49+2WcfjY2P9JWNuWJfLQ9M+JKdM4ZbnPgzc7uW1YgUPbvyHDz3k6/Lv9TJt2if+9eOtG38mQH5813fMnDhNMlFgN6HUVBbanWrfPvnAU6ZIsvPtZVnlmPffl+UfUzmXt3bcaK+TU6bQ86UczP3tN9lBAGQjaDVMjxwhT22czkrGwxG9VjFr4lT+/fwHbFb/kL9DEElO+7893PBVEr/6ivzPf6QE/vawPwmQPzzyZZ55+r/YtLQCH2XTJvu34ZedLcdyAvLC9v+bzS3jP2DPM3dwyZPfkR4P77tPDpp7d/1DLlvGcePk9+jrtMa6dezeNHfd4WGtqln0pKUXiCFUpZHAOwBYEPD8UQCPFvWeSHuhJCdLN1erN9Xvv0uLKzbWPr73qa9BUbOm7Klb3TR79ZLk/sMPoc/PqqUV1a01kNXlLZRzAYp6P0B+8IGsc40ayYpidZsG7PN9Dh8u+vwU0l5mlSvn7TyTkWG3fPr0kekG1jEPHZLP36BB3jpgYUaPLtCQK8BqPQHS8QKQLtekVI369rXH/ekne9w33ig4rfR0eW3ixOJjy8iwk4R1Tsxjj8lzr1fqx9a8rrjCHnfjxoLL1+rlAEgCIGU5DhqUt/qR/3iz1ysH86wGRLDvbc4c6aixaZMkuO7d7e8oN1c60jRvLq1tq/NRYSe+rF4t33nHjrIBatnSXo9zc+XYc9BjSmHyeKRX5Ntvy8bupJMKdNnP4+uvpTNH/pRw8KAcMD3+eLt9EKTDlN+WLTIdQBJ5YT02gzl0KEgCz6d79+Cnlrzyirwvf7kuNVWGN2tmD7N62xZxPlWxSiOBXwNgSsDzmwG8WdR7SqIboddrn8ty5IiUhgPO+6DXK+XUnj3lGIP1Y1y71v4xHI3ffy/YIaAwKSlywDLcUtfmzXLAKPC8kNWrpfQ5fLg0lFavzttYCsWOHQUb/4H++UeOjd1+e8HXittAWPbvlxgDz0fJ7+BBaVkuWiTJ/MILZYOalSUbYiupkpJ0H35YfpzBzsHJzSU//jj4j3v3buk5+MgjMp9u3exzPQ4dksTlCehuvHy5rDNz54b23T31lN36PhrLlhW/fuTmygH72rXlewv0449yHLNdO1kmt9wStGHpN2mSvaEE7HPCSkvg5wpcvoX59tvCG1RH0wiaPVuSZGGndhRl0CCpMBXGqmAuWpR3uNV7dPly+ayBv5PFi/PurO/ZI+OFmkeCKY0EPiBIAn8jyHhDACQASGjatGn4n6CCWLny6FoRx4JVq+y9jvxCSQT5ZWVJT1DA3nMJON+iXEtPl41JYWcTWnuFxZxykEd2dtEbVlW45GR7A2jtLZL2OvvRR1LarFTJ7uFZGgpL4JFczGongCYBzxsDKHDlZ5KTSMaTjI+Li4tgdhXDOefIVQ0riowMYPlyeXzWWQVfD+d6zTExwIcfyjWqrr4aeOwx4PbbI4uzrNSoIdeMuuWW4K/37w/cc49cgjXwSoxFqVwZqFOn5GKsSOrXB1q2lMfW5ZEBoEUL+b91q1w/zOuVcctaJDc1/h3AycaYFgB2AbgewH9KJCpVIaxdKzfHGDQI+M9/8t5YtyScfbZcF91trMvmFuaFFyRxJCbqTZ7LwrJlcmOUKlXsYbVqyfX2W7SQi3wCcn3/shZ2AieZa4y5B8ACSI+UqSQjvNy6qkhOO03u2pOdbf8IVPGqVgW+/NLpKCqOevXkL7/WreX/jh2yp1jchrc0RNICB8mvAXxdQrGoCiY6Wu5ONHMmMHlywfuMKlWeffutlOl27JCbJEdHlE3Dc+zc0EG5Uny83G3n7rudjkSpo7NwodwDo0cPuQmKExzYZihlu+02OeBYzI1jlCp3WrSQW/517iwtcCdoC1w56oQT5F6jVj1RKbeweqIsWVK2N4EOpAlcKaXCYCXwG26QW9g6QRO4UkqFoXlz+3GTJoWOVqo0gSulVBiqVgWmT5fHTvQBBzSBK6VU2NLS5L+2wJVSymWsM32DnehTFrQboVJKhenll6UXlVMnoWkCV0qpMHXoIH9O0RKKUkq5lCZwpZRyKU3gSinlUprAlVLKpTSBK6WUS2kCV0opl9IErpRSLqUJXCmlXMrIHevLaGbGpADYFubb6wHYW4LhlCWN3Rlujd2tcQMae2lpRjIu/8AyTeCRMMYkkIx3Oo5waOzOcGvsbo0b0NjLmpZQlFLKpTSBK6WUS7kpgU9yOoAIaOzOcGvsbo0b0NjLlGtq4EoppfJyUwtcKaVUAFckcGNML2PMRmNMkjFmpNPxFMYY08QYs9gYs94Ys84YM8w3/DhjzEJjzCbf/7pOx1oYY0yUMWalMeZL3/MWxphlvtg/NMZUcTrGYIwxdYwxHxtjNviWfwe3LHdjzAO+9WWtMWa2MaZqeV3uxpipxpg9xpi1AcOCLmcjXvf9bv8wxrR1LvJCY3/Bt878YYz5zBhTJ+C1R32xbzTG9HQm6qKV+wRujIkCMAFAbwBnALjBGHOGs1EVKhfAQyRPB3ABgKG+WEcC+J7kyQC+9z0vr4YBWB/w/HkAr/hi3w9goCNRFe81APNJngbgbMhnKPfL3RjTCMB9AOJJtgYQBeB6lN/lPh1Ar3zDClvOvQGc7PsbAmBiGcVYmOkoGPtCAK1JtgHwF4BHAcD3u70ewJm+97zly0XlSrlP4ADOA5BEcgvJbAAfAOjncExBkdxNcoXvcTokiTSCxDvDN9oMAP2dibBoxpjGAC4DMMX33ADoAuBj3yjlMnZjTC0AFwN4FwBIZpM8AJcsd8idsWKNMdEAqgHYjXK63EkuAZCab3Bhy7kfgJkUvwGoY4xpWDaRFhQsdpLfksz1Pf0NQGPf434APiB5hORWAEmQXFSuuCGBNwKwI+D5Tt+wcs0Y0xzAuQCWAWhAcjcgSR5AfeciK9KrAIYD8PqeHw/gQMAKXl6XfUsAKQCm+co/U4wx1eGC5U5yF4AXAWyHJO40AIlwx3K3FLac3fbbvR3AN77HrojdDQk82O1Cy3XXGWNMDQCfALif5EGn4wmFMeZyAHtIJgYODjJqeVz20QDaAphI8lwAh1AOyyXB+OrF/QC0AHAigOqQ0kN+5XG5F8ct6w+MMaMgJdBZ1qAgo5W72N2QwHcCaBLwvDGAfxyKpVjGmMqQ5D2L5Ke+wcnWrqPv/x6n4itCJwBXGGP+hpSpukBa5HV8u/ZA+V32OwHsJLnM9/xjSEJ3w3LvBmAryRSSOQA+BdAR7ljulsKWsyt+u8aYWwFcDuBG2v2qXRG7GxL47wBO9h2VrwI5sDDP4ZiC8tWM3wWwnuTLAS/NA3Cr7/GtAOaWdWzFIfkoycYkm0OW8SKSNwJYDOAa32jlNfZ/AewwxpzqG9QVwJ9wwXKHlE4uMMZU860/VuzlfrkHKGw5zwNwi683ygUA0qxSS3lhjOkFYASAK0geDnhpHoDrjTExxpgWkAOxy52IsUgky/0fgD6QI8SbAYxyOp4i4rwQspv1B4BVvr8+kFry9wA2+f4f53SsxXyOzgC+9D1uCVlxkwDMARDjdHyFxHwOgATfsv8cQF23LHcATwHYAGAtgPcAxJTX5Q5gNqRWnwNppQ4sbDlDyhATfL/bNZCeNuUt9iRIrdv6vb4dMP4oX+wbAfR2etkH+9MzMZVSyqXcUEJRSikVhCZwpZRyKU3gSinlUprAlVLKpTSBK6WUS2kCV0opl9IErpRSLqUJXCmlXOr/AT83CpZC/9bnAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "rf = RandomForestRegressor(random_state=42,min_samples_leaf=150)\n",
    "model_train(rf, X_train, y_train, X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\wenyang.zhang\\documents\\myspace\\python37\\lib\\site-packages\\sklearn\\svm\\base.py:193: FutureWarning: The default value of gamma will change from 'auto' to 'scale' in version 0.22 to account better for unscaled features. Set gamma explicitly to 'auto' or 'scale' to avoid this warning.\n",
      "  \"avoid this warning.\", FutureWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mse:  1.5222216724587816 rmse:  1.2337834787590494\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.svm import SVR\n",
    "svr =SVR()\n",
    "model_train(svr, X_train, y_train, X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mse:  1.705754181067811 rmse:  1.30604524464806\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "gbr = GradientBoostingRegressor()\n",
    "model_train(gbr, X_train, y_train, X_test, y_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
